﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DataTier.Repository;
using Common;

namespace DataServices
{
    [ServiceBehavior(Namespace = WCFSettings.Namespace)]
    public class StatesService : IStatesService
    {


        /// <summary>
        /// Устанавливает новый статус конкретному документу по его Id и типу
        /// </summary>
        /// <param name="type"></param>
        /// <param name="id"></param>
        /// <param name="stateId"></param>
        public void SetDocumentState(int currentUserId, int type, int id, int stateId)
        {
            try
            {
                new StatesRepository().SetDocumentState(currentUserId, type, id, stateId);
            }
            catch (Exception ex)
            {
                new Logger().LogException(ex);
                throw new FaultException<ExceptionDetail>(new ExceptionDetail(ex), "Произошла ошибка при попытке установить статус в базе данных.");
            }
        }


        /// <summary>
        /// Возвращает текущий статус конкретного документа по его Id и типу
        /// </summary>
        /// <param name="type"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public int GetDocumentState(int currentUserId, int type, int id)
        {
            try
            {
                return new StatesRepository().GetDocumentState(currentUserId, type, id);
            }
            catch (Exception ex)
            {
                new Logger().LogException(ex);

                // Может быть, здесь стоит инициировать Exception
                //return 0;
                throw new FaultException<ExceptionDetail>(new ExceptionDetail(ex), "Произошла ошибка при попытке получить статус из базы данных.");
            }
        }


    }
}
